#include <iostream>
#include <pthread.h>
#include <unistd.h>

using namespace std;

void printer(const char *str)
{
    // 打印字符串
    // cout << str << endl;

    // 打印单个字符
    while (*str)
    {
        putchar(*str); // 输出一个字符
        fflush(stdout); // 行缓冲：确保缓冲区中的字符立即输出到屏幕上
        str++;

        // 让出CPU
        sleep(1);
    }
}

void *thread_func1(void *arg)
{
    const char *str = "hello";
    printer(str);

    // 线程退出
    pthread_exit(NULL);
}

void *thread_func2(void *arg)
{
    const char *str = "world";
    printer(str);

    // 线程退出
    pthread_exit(NULL);
}

int main()
{
    // 创建线程
    pthread_t tid1;
    pthread_create(&tid1, NULL, thread_func1, NULL);

    pthread_t tid2;
    pthread_create(&tid2, NULL, thread_func2, NULL);

    while (1)
    {
        sleep(1);
    }

    return 0;
}